home *** CD-ROM | disk | FTP | other *** search
- 10 REM C-64 CALCULATOR
- 12 PRINT"[147]":GOSUB206:GOSUB152:GOSUB220
- 14 IFPEEK(53247)<>88THEN290
- 16 GOSUB228
- 18 Z=0
- 20 IFBA<>10THENS$(Z)=H$:Z=Z+3:GOTO24
- 22 S$(Z)=D$:Z=Z+3
- 24 GETA$:IFA$=""THEN24:REM SCAN KEYS
- 26 IFF6=0THENPOKES+1,80+4*F7*VAL(A$):POKES,177:POKES+4,33:FORT=1TO20:NEXT:POKES+4,32
- 28 IFBA<>10THEN258
- 30 FORI=1TO15:IFA$=MID$(N$,I,1)THEN36
- 32 NEXT
- 34 GOTO62:REM A$ NOT NUMERIC
- 36 REM ADD TO D$
- 38 IF(A$="-"ORA$="+")THEN42
- 40 GOTO44
- 42 IF(F3<>0ANDRIGHT$(D$,1)<>"E")ORF5=1THEN62
- 44 IFD$=" 0"ORF4=1THEND$=" ":F1=0:F2=0:F3=0:F4=0:M=0
- 46 F3=1
- 48 IFA$="_"THEND$=LEFT$(D$,LEN(D$)-1):F1=0:F2=0:GOSUB228:GOTO24
- 50 IFA$="."ANDF1=1THEN24
- 52 IFA$="E"ANDF2=1THEN24
- 54 IFA$="."THENF1=1
- 56 IFA$="E"THENF2=1:F1=1
- 58 IFLEN(D$)<15THEND$=D$+A$
- 60 GOSUB228:GOTO24
- 62 M=0:F1=0:IF BA<>10THENS$(Z)=H$:Z=Z+1:GOTO66
- 64 S$(Z)=D$:Z=Z+1
- 66 DD=0:FORI=1TOLEN(OP$):IFA$=MID$(OP$,I,1)THEN76
- 68 NEXTI:IFA$="[133]"THENZ=Z-1:GOTO270
- 70 IFA$="H"THENZ=Z-1:GOTO302
- 72 IFA$="[135]"THENF6=-(F6=0):IFF6=1THENF7=-(F7=0)
- 74 GOTO24
- 76 F4=1:F5=1:D=VAL(D$):D$=STR$(D)
- 78 ONIGOTO102,100,100,100,100,100,100,114,80,82,84,84,116,118,134,136,138
- 80 D$=" 0":F3=0:F5=0:OP=O:A=0:GOSUB228:S$(Z)="CLEAR DISPLAY":Z=Z+1:GOTO24
- 82 FORI=1TO8:R(I)=0:NEXT:GOSUB220:FORI=1TOZ:S$(I)="":NEXT:Z=1:GOTO24
- 84 IFA$="S"THENPRINT" [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]SAVE REGISTER?":GOTO88
- 86 PRINT" [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]RECALL?"
- 88 GETB$:IFB$=""THEN88
- 90 IFB$=CHR$(13)THEN80
- 92 J=VAL(B$):IFJ>=1ANDJ<=8THEN96
- 94 GOTO84
- 96 IFA$="R"THENS$(Z)="RECALL #"+B$:Z=Z+1:D$=STR$(R(J)):GOSUB228:GOTO24
- 98 R(J)=VAL(D$):S$(Z)="SAVE TO #"+B$:Z=Z+1:GOSUB228:GOSUB220:GOTO24
- 100 GOSUB120:OP=I:A=VAL(D$):S$(Z)=A$:Z=Z+1:GOSUB228:GOTO24
- 102 S$(Z)="= ":Z=Z+1:ONOPGOTO24,104,106,108,108,110,112
- 104 D$=STR$(A+VAL(D$)):GOSUB228:A=0:OP=0:GOTO20
- 106 D$=STR$(A-VAL(D$)):GOSUB228:A=0:OP=0:GOTO20
- 108 D$=STR$(A*VAL(D$)):GOSUB228:A=0:OP=0:GOTO20
- 110 D$=STR$(A/VAL(D$)):GOSUB228:A=0:OP=0:GOTO20
- 112 D$=STR$(A^VAL(D$)):GOSUB228:A=0:OP=0:GOTO20
- 114 D$=STR$(ABS(D)^.5):S$(Z)="SQUARE ROOT ":Z=Z+1:GOSUB228:GOTO20
- 116 D$=STR$(LOG(ABS(D))):S$(Z)="LN ":Z=Z+1:GOSUB228:GOTO20
- 118 D$=STR$(LOG(ABS(D))/LOG(10)):S$(Z)="LOG ":Z=Z+1:GOSUB228:GOTO20
- 120 ONOPGOTO24,122,124,126,126,128,130,132,132,132,132,132,132,132
- 122 D$=STR$(A+VAL(D$)):F3=0:F5=0:RETURN
- 124 D$=STR$(A-VAL(D$)):F3=0:F5=0:RETURN
- 126 D$=STR$(A*VAL(D$)):F3=0:F5=0:RETURN
- 128 D$=STR$(A/VAL(D$)):F3=0:F5=0:RETURN
- 130 D$=STR$(A^VAL(D$)):F3=0:F5=0:RETURN
- 132 D$=STR$(VAL(D$)):F3=0:F5=0:RETURN
- 134 BA=16:BA$=" ":GOTO146
- 136 BA=10:BA$=" ":GOTO146
- 138 PRINT" [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]BASE";
- 140 INPUTBA$:BA=VAL(MID$(BA$,49,2)):IFBA<2ORBA>73THEN138
- 142 BA$=" ":IFBA=10ORBA=16ORBA=8ORBA=2THEN146
- 144 BA$="<"+RIGHT$(STR$(BA),LEN(STR$(BA))-1)+">":IFBA<10THENBA$=BA$+" "
- 146 PRINT"[194] "BA$
- 148 S$(Z)="BASE"+STR$(BA):Z=Z+1
- 150 GOSUB228:GOSUB220:A$="=":GOTO102
- 152 PRINT"[151][147]";:REM PRINT SCREEN
- 154 PRINT" [213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]";
- 156 PRINT"[213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201] [1][194] [194]";
- 158 PRINT"[194] C-64 CALCULATOR [194] [202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 160 PRINT"[194] [194] [213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]";
- 162 PRINT"[194][213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201][194] [2][194] [194]";
- 164 PRINT"[194][194] [194][194] [202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 166 PRINT"[194][202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203][194] [213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]";
- 168 PRINT"[194] [194] [3][194] [194]";
- 170 PRINT"[194] [194] [202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 172 PRINT"[194] [213][195][201][213][195][201][213][195][201][213][195][201] [194] [213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]";
- 174 PRINT"[194] [194]S[194][194]R[194][194]C[194][194][206][194] [194] [4][194] [194]";
- 176 PRINT"[194] [202][195][203][202][195][203][202][195][203][202][195][203] [194] [202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 178 PRINT"[194] [213][195][201][213][195][201][213][195][201][213][195][201] [194] [213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]";
- 180 PRINT"[194] [194]7[194][194]8[194][194]9[194][194][214][194] [194] [5][194] [194]";
- 182 PRINT"[194] [202][195][203][202][195][203][202][195][203][202][195][203] [194] [202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 184 PRINT"[194] [213][195][201][213][195][201][213][195][201][213][195][201] [194] [213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]";
- 186 PRINT"[194] [194]4[194][194]5[194][194]6[194][194][195][194] [194] [6][194] [194]";
- 188 PRINT"[194] [202][195][203][202][195][203][202][195][203][202][195][203] [194] [202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 190 PRINT"[194] [213][195][201][213][195][201][213][195][201][213][195][201] [194] [213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]";
- 192 PRINT"[194] [194]1[194][194]2[194][194]3[194][194][219][194] [194] [7][194] [194]";
- 194 PRINT"[194] [202][195][203][202][195][203][202][195][203][202][195][203] [194] [202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 196 PRINT"[194] [213][195][195][195][201] [213][195][201][213][195][201] [194] [213][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][201]";
- 198 PRINT"[194] [194] 0 [194] [194][209][194][194]=[194] [194] [8][194] [194]";
- 200 PRINT"[194] [202][195][195][195][203] [202][195][203][202][195][203] [194] [202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 202 PRINT"[202][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][203]";
- 204 RETURN
- 206 REM INITIALIZE
- 208 E$=" [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]":DIMS$(1000)
- 210 N$="0123456789.E+-_":OP$="=+-X*/^@"+CHR$(13)+"[195]SR[204]L[200][196][194]":D$=" 0":A$="":BA=10
- 212 NN$=".":FORI=0TO72:NN$=NN$+CHR$(48+I-(I>9)*7):NEXT
- 214 S=54272:FORL=STOS+24:POKEL,0:NEXT:POKES+5,9:POKES+6,0:POKES+24,15
- 216 POKE53280,15:POKE53281,15
- 218 RETURN
- 220 IFBA<>10THEN224:REM PRINT MEMORY REGISTERS
- 222 PRINT"";:FORI=1TO8:PRINT""E$;R(I);"";SPC(15-LEN(STR$(R(I)))):NEXT:RETURN
- 224 PRINT"";:FORI=1TO8:D=R(I):GOSUB234
- 226 PRINT""E$;H$;"";SPC(16-LEN(H$)):NEXT:PRINT"";:RETURN
- 228 REM PRINT DISPLAY
- 230 IFBA=10THENPRINT" [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]"D$;:RETURN
- 232 D=VAL(D$):GOSUB234:PRINT" [157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]"H$;:RETURN
- 234 REM CONVERT D$ TO BASE BA (H$)
- 236 B=1:FORK=1TO13:B=B*BA:IFB>DTHEN240
- 238 NEXT:H$="***************":RETURN
- 240 H$=" ":IFK>1THENFORL=1TOK-1:D=D/BA:NEXT
- 242 IFBA=16THENH$="$"
- 244 IFBA=2THENH$="%"
- 246 IFBA=8THENH$="@"
- 248 IFD<0THENH$=H$+"-":D=ABS(D)
- 250 FORL=1TO13*(-(BA<11)-(BA>10)*2/LOG(BA)):D%=D:H$=H$+CHR$(48+D%-(D%>9)*(7))
- 252 D=BA*(D-D%):IFD=0ANDL>K-1THENRETURN
- 254 IFL=KTHENH$=H$+"."
- 256 NEXT:RETURN
- 258 REM INPUT ROUTINE FOR BA<>10
- 260 FORI=1TOBA+1:IFA$=MID$(NN$,I,1)THEN264
- 262 NEXT:GOTO62
- 264 IFI=1THENF1=1:GOTO24
- 266 IFF1=0THENDD=BA*DD+I-2:D$=STR$(DD):GOSUB228:GOTO24
- 268 M=M+1:DD=DD+(I-2)/BA^M:D$=STR$(DD):GOSUB228:GOTO24
- 270 J=22:PRINT"[147]"TAB(12)"PRESS <F3> TO QUIT"
- 272 PRINTTAB(18)"<CURSOR DOWN> TO SCAN"
- 274 PRINTTAB(18)"<F7> TO PRINT";
- 276 FORI=1TO22:PRINTS$(I)
- 278 NEXT
- 280 GETA$:IFA$=""THEN280
- 282 IFA$=""THENJ=J+1:PRINTS$(J):FORT=1TO50:NEXT:GOTO280
- 284 IFA$="[136]"THENOPEN4,4:FORI=1TOZ:PRINT#4,S$(I):NEXT:PRINT#4,:CLOSE4:GOTO280
- 286 IFA$="H"THEN302
- 288 GOSUB152:GOSUB228:GOSUB220:GOTO24
- 290 T$="C-64 CALCULATOR BY DICK WEISIGER HIT H FOR HELP":POKE53247,88
- 292 D$=" "
- 294 FORI=1TOLEN(T$):D$=RIGHT$(D$+MID$(T$,I,1),15)
- 296 PRINT""D$;:FORT=1TO50:NEXTT,I
- 298 GETA$:IFA$=""THEN298
- 300 IFA$<>"H"THEND$=" 0":GOSUB228:GOTO26
- 302 PRINT"[147] C-64 CALCULATOR COMMANDS"
- 303 PRINT" + - * / ^ = LEGAL OPERATORS"
- 306 PRINT" <RTN> CLEARS DISPLAY"
- 308 PRINT"<SHIFT> <C> CLEARS REGISTERS"
- 310 PRINT" <_> CLEARS LAST CHAR"
- 312 PRINT" <S> SAVES TO REGISTER"
- 314 PRINT" <R> RECALLS FROM REGISTER"
- 316 PRINT" <@> SQUARE ROOT"
- 318 PRINT" <L> LOG BASE 10"
- 320 PRINT"<SHIFT> <L> NATURAL LOG"
- 322 PRINT" <H> DISPLAYS HELP SCREEN"
- 324 PRINT"<SHIFT> <H> SETS CALCULATOR TO HEX"
- 326 PRINT"<SHIFT> <D> SETS CALCULATOR TO DEC"
- 328 PRINT"<SHIFT> <B> SETS TO ANY OTHER BASE"
- 330 PRINT" <F1> REVIEWS CALCULATION"
- 332 PRINTTAB(16)"(INCLUDES PRINT OPTION)"
- 334 PRINT"[145] <F5> DISABLES/ENABLES SOUND"
- 336 PRINT"NOTE: BASES > 35 UTILIZE GRAPHIC CHARS"
- 338 PRINT" HIT <F8> FOR LIST OF CHARS USED"
- 340 PRINT" <PRESS ANY KEY>"
- 342 GETA$:IFA$=""THEN342
- 344 IFA$="[140]"THEN348
- 346 D$="`0":GOSUB152:GOSUB228:GOSUB220:GOTO24
- 348 PRINT"[147]";:FORI=1TO24
- 350 PRINTI;MID$(NN$,I+2,1)TAB(15)I+24;MID$(NN$,I+26,1)TAB(30)I+48;MID$(NN$,I+50,1)
- 352 NEXT:GOTO342
-